package com.abcd.ioc;

/**
 * @program: TestMaven
 * @description: Ioc说明
 * @author: Liu Xinpeng
 * @create: 2021-05-18 14:43
 **/
public class Explain {

    /**
     * Ioc意味着将设计好的对象交给容器控制，而不是传统的在对象内部直接控制。理解好Ioc的关键因该是要明确"谁控制谁。控制了什么
     * 为何是反转，哪些方面反转了"
     * 谁控制谁，控制了什么：传统javase程序设计，我们直接在对象内部通过new进行创建，是程序主动去创建依赖对象；而Ioc是有专门的一个容器
     * 来创建这些对象，即由Ioc容器来控制对象的创建以及内部资源获取（不只是对象包括文件等）
     * 为何是反，发转了什么：有反转就有正转，传统应用程序是由我们自己在对象中主动控制去直接获取依赖对象，也就是正转；而反转则是
     * 由容器来帮忙创建及注入依赖对象；由容器帮我们查找及注入依赖对象，对象只是被动的接受依赖对象，所以是反转，依赖对象的获取被反转了
     */

    /**
     * Ioc具体做什么
     *
     * Ioc不是一种技术，只是一种思想，一个重要的面向对象的编程法则，它能指导我们如何设计出松耦合、更优良的程序
     * 传统应用程序都是由我们在类的内部主动创建依赖对象，导致类与类之间耦合高，难以测试
     * 有了Ioc容器之后，把创建和查找依赖对象的控制权交给了容器，由容器进行注入组合对象，所以对象与对象之间是松散的耦合，这样方便测试
     * 也利于功能的复用
     * Ioc对编程实现由Ioc容器帮对象找相应的依赖对象并注入，而不是对象主动去找
     *
     */
}